﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Users;

namespace Sim
{
    public delegate void DelegateLogin(string username, string password);
    public delegate void DelegateOpenSignUpWindow();
    public delegate void DelegateCreateNewTournament(Tournament t);
    public delegate void DelegateRemoveTournament(string tournamentName);
    public delegate void DelegateApplyForTournament(string tournamentName);
    public delegate void DelegateAcceptUserForTournament(string username, string tournamentName);
    public delegate void DelegateDeclineUserForTournament(string username, string tournamentName);
    public delegate void DelegateAddJudgeToTournament (string username, string tournamentName);
    public delegate void DelegateSubmitDive(List<string> dives, string username, string tournamentName);
    public delegate void DelegateSubmitJudgeScore(string username, string tournamentName, string divecode, string score, string round, string judgeusername);
    public delegate void DelegateStartTournament(string tournamentName);

    public delegate void DelegateRefreshTournamentList();
    public delegate void DelegateRefreshUserList();

    public interface IMain
    {
        event DelegateLogin EventLogin;
        event DelegateOpenSignUpWindow EventOpenSignUpWindow;
        event DelegateCreateNewTournament EventNewTournament;
        event DelegateRemoveTournament EventRemoveTournament;
        event DelegateApplyForTournament EventApplyForTournament;
        event DelegateAcceptUserForTournament EventAcceptUserForTournament;
        event DelegateDeclineUserForTournament EventDeclineUserForTournament;
        event DelegateStartTournament EventStartTournament;
        event DelegateRefreshTournamentList EventRefreshTournamentList;
        event DelegateRefreshUserList EventRefreshUserList;
        event DelegateAddJudgeToTournament EventAddJudgeToTournament;
        event DelegateSubmitDive EventSubmitDive;
        event DelegateSubmitJudgeScore EventSubmitJudgeScore;
    }
}
